const arr = [2, 11, 7, 15];
const arr2 = [1, 1, 2, 4, 9, 5, 9];

function twoSum(nums, target) {
  let temp = [];
  for (let i = 0; i < nums.length; i++) {
    let dif = target - nums[i];
    if (temp[dif] != undefined) {
      return [temp[dif], i];
    }
    temp[nums[i]] = i;
  }
}

// 数组中重复元素组成新数组
function duplicate(arr) {
  let result = []

  result = arr.filter(
    (item, i, array) =>
      array.indexOf(item) !== array.lastIndexOf(item) &&
      array.indexOf(item) === i
  )

  return result
}

function getTreeArray(arr, tempArr = []) {
  const result = tempArr

  arr.forEach(element => {
    if (!element.children) {
      result.push(element)
    } else {
      const { children, ...params } = element
      result.push(params)
      getTreeArray(children, result)
    }
  });
  
  return result
}

// console.log(true == [])
// console.log(true == {})

// if ([]) {
//   console.log('[]');
// }

// if ({}) {
//   console.log('{}')
// }

// if ([] == true) {
//   console.log(1);
// } else {
//   console.log(2);
// }

// 与操作返回第一个假值
// 或操作返回第一个真值
// [],{}是真值
// console.log(1 && [] && 0)
// console.log(0 && 1)
// console.log([] && 1)
// console.log(0 && [])

// console.log(!![])
// console.log(!!0)

function tree2Array(arr, tempArr = []) {
  const result = tempArr

  arr.forEach(element => {
    if (!element.children) {
      result.push(element)
    } else {
      const { children, ...params } = element
      result.push(params)
      tree2Array(children, result)
    }
  });

  return result
}

function duplicate(arr) {
  return arr.filter(
    (item, i, array) =>
      array.indexOf(item) !== array.lastIndexOf(item) &&
      array.indexOf(item) === i
  )
}

// in能检测到原型对象上的属性，hasOwnProperty检测不到
// var obj = {
//   name: 'zs',
//   age: 18,
//   gender: 'male',
//   address: 'SH'
// }

// obj.__proto__.mobile = 911

// console.log('mobile' in obj)
// console.log(Object.hasOwnProperty('mobile'))
